package com.basics.operator;

public class OperatorDemo6 {
    public static void main(String[] args) {
        //目标：掌握逻辑运算符的使用
        System.out.println(isMatch( 26, 180, '女'));
        System.out.println(isMatch( 26, 180, '男'));
        System.out.println(isMatch1( 26, 180));
        isMatch3(true);
        isMatch4();
        isMatch5();
    }

    //逻辑与&& 需求：判断某个人的条件是否符合择偶标准
    public static boolean isMatch(int age, double height,char sex) {
        //需求：判断某个人的条件是否符合择偶标准
        //年龄大于25岁，并且身高大于180cm,性别为女
        boolean result = age > 25 & height > 180 && sex == '女';
        return result;
    }

    //逻辑或| 需求：找一个男朋友，要么升高高于180cm，要么年龄大于25岁
    public static boolean isMatch1(int age, double height) {
        //需求：找一个男朋友，要么升高高于180cm，要么年龄大于25岁
        //年龄小于25岁，或者身高大于180cm
        boolean result = age < 25 | height > 180;
        return result;
    }

    //非!运算符 取反
    public static void isMatch3(boolean flag) {
        boolean b = true;
        System.out.println(!b);//false
    }

    //异或^运算符 两个操作数相同为false，不同为true
    public static void isMatch4() {
        System.out.println(true ^ true);//false
        System.out.println(true ^ false);//true
        System.out.println(false ^ true);//true
        System.out.println(false ^ false);//false
    }

    //判断&& || 和 & | 的区别
    public static void isMatch5() {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println(a > 11 && ++b > 20);//false 发现左边条件为false，右边条件不执行
        System.out.println(b);//20
        System.out.println(a > 1 & ++c > 30);//false 左边条件为false，右边条件仍然执行
        System.out.println(c);//31


        int d = 10;
        int e = 20;
        int f = 30;
        System.out.println(d > 1 || ++e > 20);//true 左边条件为true，右边条件不执行
        System.out.println(e);//20
        System.out.println(d > 1 | ++f > 30);//true 左边条件为true，右边条件仍然执行
        System.out.println(f);//31
    }
}
